package main

import "fmt"

func getUserInfo() (string, int) {
	return "Tonvi", 12
}

func main(){
	// fmt.Println("你好 golang")
	// fmt.Println("这是第二行")
	// fmt.Print("这是第三行")
	fmt.Printf("%v.this is a %v format\n", 1, "string")
	fmt.Println(1, "b", true)
	fmt.Print(1, "b", true)
	
	// 声明变量的三种方式

	// var a = "123"		
	// var b string = "345"
	// c := a+b	// 短变量声明法
	// fmt.Println(b)
	// fmt.Printf("a的值是%v，a的类型是%T\n", a, a)
	// fmt.Printf("c的值是%v，c的类型是%T\n", c, c)

	// 变量声明后没有初始化则值为空(string);0(int);false(boolean).
	// var username string
	// fmt.Println(username)
	// var age int
	// fmt.Println(age)
	// var is_boy bool
	// fmt.Println(is_boy)

	// 一次声明多个变量
	// var a1, a2 bool
	// var (
	// 	b1 string
	// 	b2 int
	// )
	// var c1, c2 = 11, 22

	// fmt.Println(a1, a2, b1, b2, c1, c2)

	// 短变量声明法(仅限局部变量)
	// username := "张三"
	// age, gender := 12, "男"
	// fmt.Println(username, age, gender)

	// 匿名变量 _ 不分配空间或内存，所以没有重复分配的概念
	// 而且 _ 不能作为值变量使用
	// var username, _ = getUserInfo()
	// // fmt.Println(_)
	// fmt.Println(username)
	

	// 常量
	// 常量定义完后必须同时赋值
	// const pi = 3.14159
	// const (
	// 	a = "A"
	// 	b = "B"
	// 	c
	// 	d
	// )
	// fmt.Println(pi, a, c, d)

	// 计算器iota
	// 每次const出现时, iota置0, 每次赋值递增1
	const (
		d1, d2 = iota, iota+1
		e1, e2
		_, _
		f1, f2 
		g = 100
		h = iota		
		i
	)
	fmt.Println(d1, d2, e1, e2, f1, f2, g, h, i)
}